package com.bigzero.workflow.modules.system.service;

import com.bigzero.workflow.modules.system.dto.MenuDto;
import com.bigzero.workflow.modules.system.entity.MenuEntity;
import com.bigzero.workflow.modules.system.query.MenuQuery;
import com.bigzero.workflow.modules.system.vo.MenuVo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * 菜单service
 * @Author: fanxinxiong
 * @Date: 2025-02-11 14:48:00
 */
public interface MenuService {

    /**
     * 根据主键id查询菜单vo
     * @param id 主键id
     * @return MenuVo
     */
    MenuVo getVoById(String id);

    /**
     * 新增或修改菜单
     * @param menuDto 菜单dto
     * @return int
     */
    MenuVo insertOrUpdate(MenuDto menuDto);

    /**
     * 根据id删除菜单
     * @param id 主键id
     * @return int
     */
    int deleteById(String id);

    /**
     * 树形表格
     * @param parentId 父id
     * @param query
     * @return List<MenuVo>
     */
    List<MenuVo> treeTable(String parentId, MenuQuery query);

    /**
     * 根据map参数查询vo集合
     * @param map
     * @return List<MenuVo>
     */
    List<MenuVo> getVoListByMap(HashMap<String, Object> map);

    /**
     * 菜单下拉树
     * @return List<MenuVo>
     */
    List<MenuVo> dropdownTree();

    /**
     * 根据集合构建树
     *
     * @param parentId
     * @param menuVoList
     * @return List<MenuVo>
     * @author: fanxinxiong
     * @date: 2024-06-07
     */
    List<MenuVo> buildTree(String parentId, List<MenuVo> menuVoList);

    /**
     * 获取父级菜单集合
     * @return List<MenuEntity>
     */
    List<MenuEntity> getParentMenuList();
}
